package cn.com.anypay.manager.lakala.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * 拉卡拉电子合同查询响应DTO
 *
 * @author Claude
 * @date 2024-01-15
 */
@Data
@Accessors(chain = true)
public class LakalaContractQueryResponse implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 返回码
     */
    @JsonProperty("code")
    private String code;

    /**
     * 返回消息
     */
    @JsonProperty("message")
    private String message;

    /**
     * 订单号
     */
    @JsonProperty("order_no")
    private String orderNo;

    /**
     * 电子合同号
     */
    @JsonProperty("ec_no")
    private String ecNo;

    /**
     * 合同状态
     * PENDING: 待签约
     * SIGNING: 签约中
     * COMPLETED: 已完成
     * FAILED: 失败
     */
    @JsonProperty("ec_status")
    private String ecStatus;

    /**
     * 合同名称
     */
    @JsonProperty("ec_name")
    private String ecName;

    /**
     * 商户名称
     */
    @JsonProperty("merchant_name")
    private String merchantName;

    /**
     * 签约时间
     */
    @JsonProperty("sign_time")
    private Date signTime;

    /**
     * 签约链接
     */
    @JsonProperty("sign_url")
    private String signUrl;

    /**
     * 失败原因（如果有）
     */
    @JsonProperty("fail_reason")
    private String failReason;

    /**
     * 判断是否成功
     */
    public boolean isSuccess() {
        return "000000".equals(code);
    }

    /**
     * 判断是否已签约完成
     */
    public boolean isCompleted() {
        return "COMPLETED".equals(ecStatus);
    }

    /**
     * 获取数据（返回自身，用于兼容）
     */
    public LakalaContractQueryResponse getData() {
        return this;
    }

    /**
     * 获取状态（兼容方法）
     */
    public String getStatus() {
        return ecStatus;
    }
}